---@class AbstractBehavior:IBehaviour
local AbstractBehavior = ClientFight.CreateClass("AbstractBehavior",nil,ClientFight.IBehaviour)
function AbstractBehavior:ctor()
    self.status = EStatus.INVALID
end

---@return EStatus
function AbstractBehavior:tick()
    if self.status ~= EStatus.RUNNING then
    self:onInitialize();
    end
    self.status = self:update()
    if(self.status ~= EStatus.RUNNING) then
        self:onTerminate(self.status)
    end
    return self.status
end
function AbstractBehavior:release()

end
function AbstractBehavior:setStatus(status)
    self.status = status
end
function AbstractBehavior:getStatus()
    return self.status
end
function AbstractBehavior:onInitialize()

end
function AbstractBehavior:onTerminate(Status)

end